﻿'''
题目描述
所谓水仙花数，是指一个n位的正整数，其各位数字的n次方和等于该数本身。
例如153是水仙花数，153是一个3位数，并且153 = 1^3 + 5^3 + 3^3。
输入描述
第一行输入一个整数n，表示一个n位的正整数。n在3到7之间，包含3和7。
第二行输入一个正整数m，表示需要返回第m个水仙花数。
输出描述
返回长度是n的第m个水仙花数。个数从0开始编号。
若m大于水仙花数的个数，返回最后一个水仙花数和m的乘积。
若输入不合法，返回-1。
示例1
输入
3
0
输出
153
说明
153是第一个水仙花数
示例2
输入
9
1
输出
-1
说明
9超出范围
'''
#判断num是不是水仙花数
def isNarciNumber(num:int,n:int) -> bool:
    sum_result = 0
    num_copy = num
    for i in range(n):
        sum_result = sum_result + (num_copy % 10) ** n
        num_copy = num_copy // 10
    return sum_result == num

def test():
    #读入n位整数：n
    n = int(input())
    #读入正整数m，表示要返回第m个水仙花数
    m = int(input())

    if n < 3 or n > 7:
        print('-1')
        exit()
    if m < 0 :
        print('-1')
        exit()
    #遍历n位所有整数并将水仙花数加入到列表中
    start_num = 10 ** (n - 1)
    end_num = 10 ** n
    narciNum_list = []
    for number in range(start_num,end_num):
        if isNarciNumber(number,n):
            narciNum_list.append(number)

    #判断m是否大于水仙花数，并返回结果:可以使用三元表达式
    len_narciNumber = len(narciNum_list)
    if len_narciNumber == 0:
        print("-1")
        exit()
    
    print( (narciNum_list[-1] * m) if m >= len_narciNumber else narciNum_list[m])

if __name__ == "__main__":
    test()

